# # 文件操作
# # 使用 open 打开一个文件
# f = open('d:/bit/python/test.txt', 'r')
# print(f)
# print(type(f))
#
# # 关闭文件
# f.close()

# # 一直打开文件 一共能打开多少个文件？
# flist = []
# count = 0
# while True:
#     f = open('d:/bit/python/test.txt', 'r')
#     flist.append(f)
#     f.close()
#     count += 1
#     print(f"打开文件的个数：{count}")

# # 使用 write 来实现写文件
# f = open('test.txt', 'w')  # 直接写的方式打开 -> 先会清除文件，然后在写
# # f = open('test.txt', 'a')  # 使用 'a' 的方式打开  -> 追加重定向，接着写
# f.write('world')
# f.close()

# # 1.如何读文件呢？  read 读取的是字符个数
# f = open('test.txt', 'r', encoding='utf8')
# result = f.read(2)
# print(result)
# f.close()

# # 2.按行读取 使用 for 循环
# f = open('test.txt', 'r', encoding='utf8')
# for line in f:
#     print(line, end='')
# f.close()

# # 3.还可以使用 readlines 方法把整个文件所有内容读出来，按照行组织到一个列表里
# f = open('test.txt', 'r', encoding='utf8')
# lines = f.readlines()
# print(lines)
# f.close()

# # 有些情况还是非常容易遗忘fclose
# def func():
#     f = open('test.txt', 'r', encoding='utf8')
#     # 中间写其他的操作文件
#     # 万一中间的代码里，有 条件判定 ，函数返回，抛出异常
#     if cond:
#         # 进行条件处理
#         f.close()
#         return

# # 使用上下文管理器，就能解决这个问题：with下面的代码块执行完毕后，它会自动帮你关闭文件 类似于C++的智能指针
# def func():
#     with open('test.txt', 'r', encoding='utf8') as f:
#         # 进行文件处理的逻辑
#         # 假设这里有很多代码
#         # 假设这里有很多代码
#         # 假设这里有很多代码
#         # 假设这里有很多代码
#         cond = 1
#         if cond:
#             return

# # 分割文件
# def slip_file(input_file, slip_number):
#     with open(input_file, 'r') as f:
#         current_line = 0
#         file_number = 1
#         output_file = open(f'output_file{file_number}.txt', 'w')
#         for line in f:
#             if current_line == slip_number:
#                 output_file.close()
#                 current_line = 0
#                 file_number += 1
#                 output_file = open(f'output_file{file_number}.txt', 'w')
#             output_file.write(line)
#             current_line += 1
#     output_file.close()
#
#
# slip_file('test.txt', 10)

# import datetime
# # 构造 datetime 变量
# date1 = datetime.datetime(year=2024, month=3, day=7)
# date2 = datetime.datetime(2080, 7, 8)
# print(date2 - date1)

# from datetime import datetime
# # 构造 datetime 变量
# date1 = datetime(year=2024, month=3, day=7)
# date2 = datetime(2080, 7, 8)
# print(date2 - date1)

# import datetime as dt
# # 构造 datetime 变量
# date1 = dt.datetime(year=2024, month=3, day=7)
# date2 = dt.datetime(2080, 7, 8)
# print(date2 - date1)

# # 翻转单词顺序
# def reverseWords(s: str):
#     tokens = s.split(' ')
#     tokens.reverse()
#     return ' '.join(tokens)
#
#
# st = input('请输入一段字符串：')
# st = reverseWords(st)
# print(st)

# # 判定旋转字符串
# def rotatestring(s, goal):
#     if len(s) != len(goal):
#         return False
#     return goal in (s + s)
#
#
# print(rotatestring('abcde', 'cdeab'))
# print(rotatestring('abcde', 'edcba'))

# # 统计是给定字符串前缀的数目 力扣P2255
# def countPerfixes(words: list, s: str):
#     count = 0
#     for word in words:
#         if s.startswith(word):
#             # f是以word开头
#             count += 1
#     return count
#
#
# words = ['a', 'b', 'c', 'ab', 'bc', 'abc']
# string = 'abc'
# number = countPerfixes(words, string)
# print(number)
